package file;

import java.io.File;
import java.io.FileFilter;

/**
 * @Classname: ListFilesDemo2
 * @Author: bromide
 * @CreateTime: 2022/3/25--15:31
 * @Version: V1.0
 * @Desciption: filter:过滤器
 * accept: 接受
 * contains: 包含
 * <p>
 * 有条件的获取一个目录中的子项
 * <p>
 * File有一个重载的listFiles方法，允许我们传入一个文件过滤器，并在该过滤器上定义过滤器条件，
 * 之后listFiles执行完毕会将目录中所有满足过滤器要求的子项进行返回
 */
public class ListFilesDemo2 {
    public static void main(String[] args) {
        //获取当前目录中名字里含字母"o"的子项
        File dir = new File(".");
        if (dir.isDirectory()) {
            //过滤器，因为只用一次，所以用匿名内部类
            FileFilter filter = new FileFilter() {
                @Override
                public boolean accept(File file) {
                    return file.getName().contains("o");
                }
            };
            File[] subs = dir.listFiles(filter);
            System.out.println("共" + subs.length + "个子项");
            for (int i = 0; i < subs.length; i++) {
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}